<?php
/*
  [EWEISHOP] Copyright(C) 2017 Elinkint Inc.
  This is NOT a freeware, use is subject to license terms
   
  MiniProgramTemplateMessage.php 2018-05-25 17:23 cunx $
   
*/

namespace common\library\wechat\miniprogram;

use common\component\wechat\Wechat;
use common\library\wechat\WechatApi;
use yii\db\Exception;

/**
 * 小程序模板消息
 * Class MiniProgramTemplateMessage
 * @package common\library\wechat\miniprogram
 * @author cunx
 */
class MiniProgramTemplateMessage extends WechatApi
{
    static $apiType = 'miniProgram';

    /**
     * 获取小程序模板库标题列表
     * @param int $offset   offset和count用于分页，表示从offset开始，拉取count条记录，offset从0开始，count最大为20。
     * @param int $count    offset和count用于分页，表示从offset开始，拉取count条记录，offset从0开始，count最大为20。
     * @return array|bool|void
     * @author cunx
     */
    public static function getList(int $offset, int $count){
        try{
            $result = self::getInstance()->template_message->list($offset,$count);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

    /**
     * 获取模板库某个模板标题下关键词库
     * @param string $id           模板库的模板ID
     * @return array|bool|void
     * @author cunx
     */
    public static function get(string $id){
        try{
            $result = self::getInstance()->template_message->get($id);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

    /**
     * 组合模板并添加至帐号下的个人模板库
     * @param string $id               模板库的模板ID
     * @param array $keywordIdList  keyword_list    关键字ID数组
     * ------------------------------------------------------------------
     * $keywordIdList 有序数组，示例结构如下：
     * [3 , 4 , 5 , 2 , 1]
     * ------------------------------------------------------------------
     * @return array|bool|void|string
     * @author cunx
     */
    public static function add(string $id, array $keywordIdList){
        try{
            $result = self::getInstance()->template_message->add($id, $keywordIdList);
            if ($result['template_id'])return Wechat::apiError($result['template_id']);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

    /**
     * 获取帐号下已存在的模板列表
     * @param int $offset   offset和count用于分页，表示从offset开始，拉取count条记录，offset从0开始，count最大为20。
     * @param int $count    offset和count用于分页，表示从offset开始，拉取count条记录，offset从0开始，count最大为20。
     * @return array|bool|void
     * @author cunx
     */
    public static function getTemplates(int $offset, int $count){
        try{
            $result = self::getInstance()->template_message->getTemplates($offset, $count);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

    /**
     * 删除帐号下的某个模板
     * @param string $templateId    已添加至帐号下的模板id
     * @return array|bool|void
     * @author cunx
     */
    public static function delete(string $templateId){
        try{
            $result = self::getInstance()->template_message->delete($templateId);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }

    /**
     * 发送模板消息
     * @param string $openId        接收者（用户）的 openid
     * @param string $templateId    所需下发的模板消息的id
     * @param string $formId        表单提交场景下，为 submit 事件带上的 formId；支付场景下，为本次支付的 prepay_id
     * @param string $page          点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
     * @param array $data           模板内容，不填则下发空模板
     * @return array|bool|void
     * @author cunx
     */
    public static function send(string $openId, string $templateId, string $formId, string $page, array $data){
        try{
            $params = [
                'touser' => $openId,
                'template_id' => $templateId,
                'form_id' => $formId,
                'page' => $page,
                'data' => $data
            ];
            $result = self::getInstance()->template_message->send($params);
        }catch(\Exception $result){}
        return Wechat::apiError($result);
    }


}